import Taro from '@tarojs/taro';
import store from '@/src/store';

/**
 * 将秒数转换为"分:秒"格式
 * @param {number} seconds - 要转换的秒数
 * @returns {string} 格式化后的时间字符串，格式为"分:秒"
 */
export const secondsToTime = (seconds: any) => {
  const mins: any = Math.floor(seconds / 60);
  const secs: any = Math.floor(seconds % 60);
  return `${mins < 10 ? '0' : ''}${mins}:${secs < 10 ? '0' : ''}${secs}`;
};
/**
 * 统一电话号码格式，去除所有非数字字符
 * @param {string} phoneNumber - 原始电话号码
 * @returns {string} 纯数字的电话号码
 */
export const formatPhoneNumber = (phoneNumber: string) => {
  // 使用正则表达式替换所有非数字字符
  return phoneNumber.replace(/\D/g, '');
};
/**
 * 处理富文本里的图片宽度自适应
 * 1. 移除img标签上的style、width、height属性
 * 2. 为img标签添加自适应样式：max-width:100%; height:auto; 并防止图片间空白
 * 3. (可选)处理其他标签的样式或进行其他清理工作
 * @param {string} html - 原始富文本HTML字符串
 * @returns {string} - 处理后的HTML字符串
 */
export const formatRichText = (html: any) => {
  if (!html || typeof html !== 'string') return '';

  let processedHtml = html;
  // 处理img标签：移除原有尺寸属性，添加自适应样式
  processedHtml = processedHtml.replace(/<img[^>]*>/gi, (match) => {
    // 移除原有的style、width、height属性
    let newMatch = match
      .replace(/style\s*?=\s*?(['"])([\s\S]*?)\1/gi, '') // 匹配 style='...' 或 style="..."
      .replace(/width\s*?=\s*?(['"])([\s\S]*?)\1/gi, '')
      .replace(/height\s*?=\s*?(['"])([\s\S]*?)\1/gi, '')
      //将&amp;替换为空
      .replace(/amp;/g, '');
    // 添加自适应样式
    newMatch = newMatch.replace(
      /<img/gi,
      '<img style="max-width:100%;height:auto;display:block;margin:0 auto;"'
    );
    return newMatch;
  });

  // 可选：处理其他标签或样式，例如移除<br>标签:cite[5]:cite[7]
  // processedHtml = processedHtml.replace(/<br[^>]*\/?>/gi, '');

  // 可选：确保其他元素内的宽度样式也是自适应的:cite[5]:cite[6]
  // processedHtml = processedHtml.replace(/style="([^"]*)"/gi, (match, styleContent) => {
  //   let newStyle = styleContent.replace(/width\s*:\s*[^;]*;/gi, 'max-width:100%;');
  //   return `style="${newStyle}"`;
  // });

  return processedHtml;
};
/**
 * 校验经纬度是否合法
 * @param {number} latitude - 纬度
 * @param {number} longitude - 经度
 * @returns {boolean} 是否合法
 */
export const isValidLocation = (latitude: any, longitude: any) => {
  // 检查是否为数字类型
  if (typeof latitude !== 'number' || typeof longitude !== 'number') {
    return false;
  }

  // 检查纬度范围 (-90 ~ 90)
  if (latitude < -90 || latitude > 90) {
    return false;
  }

  // 检查经度范围 (-180 ~ 180)
  if (longitude < -180 || longitude > 180) {
    return false;
  }

  // 检查是否为非零值（如果业务允许为零，可移除此条）
  if (latitude === 0 && longitude === 0) {
    return false;
  }

  // 检查是否存在 NaN（非数字）
  if (isNaN(latitude) || isNaN(longitude)) {
    return false;
  }

  return true;
};
// 处理网络状态变化
export const getNetWorkStatus = (res) => {
  const { isConnected } = res;
  store.commonStore.setNetworkStatus(isConnected);
  // 根据网络状态执行相应操作
  if (!isConnected) {
    Taro.showToast({
      title: '网络连接已断开',
      icon: 'none',
      duration: 2000,
    });
  } else {
    store.commonStore.setNetworkStatus(true);
  }
};
